home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / tcp_ip / tnos / tnos100s / xmsmgr.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-29  |  1.9 KB  |  85 lines

  1. #if !defined(XMSMGR)
  2. #define XMSMGR
  3.  
  4. #if !defined (VMSMGR)
  5. #include <iostream.h>
  6. #include <iomanip.h>
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <dos.h>
  10. #include <string.h>
  11. #include <alloc.h>
  12. #endif
  13.  
  14. typedef struct    {
  15.     unsigned long emb_length;
  16.     unsigned source_handle;
  17.     unsigned long source_offset;
  18.     unsigned dest_handle;
  19.     unsigned long dest_offset;
  20. } xmsparms;
  21.  
  22. typedef int Boolean;
  23. #define FALSE    0
  24. #define TRUE    1
  25.  
  26. class xmsmgr    {
  27.     enum xms_err    {    notimpl     = 0x80,
  28.                 vdisk        = 0x81,
  29.                 a20err        = 0x82,
  30.                 generr        = 0x8e,
  31.                 unrecov        = 0x8f,
  32.                 nohma        = 0x90,
  33.                 hmainuse    = 0x91,
  34.                 hmamin        = 0x92,
  35.                 hmanotal    = 0x93,
  36.                 a20enab        = 0x94,
  37.                 allxms        = 0xa0,
  38.                 emmhandl    = 0xa1,
  39.                 invhandl    = 0xa2,
  40.                 srchandl    = 0xa3,
  41.                 srcoffs        = 0xa4,
  42.                 dsthandl    = 0xa5,
  43.                 dstoffs        = 0xa6,
  44.                 invlen        = 0xa7,
  45.                 overlap        = 0xa8,
  46.                 parity        = 0xa9,
  47.                 notlock        = 0xaa,
  48.                 islock        = 0xab,
  49.                 lockcnt        = 0xac,
  50.                 lockfail    = 0xad,
  51.                 smallumb    = 0xb0,
  52.                 noumb        = 0xb1,
  53.                 umbseg        = 0xb2,
  54.                 xmshandl    = 0xff
  55.     };
  56.     long xmsaddr;
  57.     unsigned largest_free_xm;
  58.     unsigned total_free_xm;
  59.     Boolean installed;
  60.     unsigned char errcode;
  61.     unsigned (*list_handles)[128][2];
  62. public:
  63.     xmsmgr();
  64.     ~xmsmgr();
  65.     inline operator void*() { return (void *)installed; }
  66.     inline int operator!() { return !installed; }
  67.     inline int is_installed() { return installed; }
  68.     void query_xms();
  69.     inline unsigned query_largest_free_xm() { return largest_free_xm; }
  70.     inline unsigned query_total_free_xm() { return total_free_xm; }
  71.     inline unsigned char readerr() { return errcode; }
  72.     inline void clearerr() { installed = TRUE; errcode = 0; }
  73.     char* xmserr();
  74.     int alloc_emb( size_t kbytes );
  75.     void free_emb( int listnum );
  76.     Boolean stow( char far* send, size_t listnum,
  77.         unsigned long bytes, unsigned long ofs );
  78.     Boolean fetch( char far* receive, size_t listnum,
  79.         unsigned long bytes, unsigned long ofs );
  80. };
  81.  
  82. #endif
  83.  
  84.     
  85.